using System;
using System.Collections.Generic;
using System.Text;
using System.Drawing;
using System.Net;
using System.Drawing.Drawing2D;

namespace Krile.Kernel.Bridges
{
    public interface IConfig
    {
        /// <summary>
        /// Web proxy
        /// </summary>
        IWebProxy Proxy { get;}

        /// <summary>
        /// Timeout of web connection
        /// </summary>
        int Timeout { get;}

        /// <summary>
        /// Display configuration
        /// </summary>
        IDisplayConfig DisplayConfig { get; }

        /// <summary>
        /// Use gzip compression with download some material
        /// </summary>
        bool UseGZip { get;}

        /// <summary>
        /// Default user-agent string
        /// </summary>
        string DefaultUserAgent { get; }

        /// <summary>
        /// Plugin directory path
        /// </summary>
        string PluginPath { get; }

        /// <summary>
        /// Application Name
        /// </summary>
        string AppName { get; }
    }

    public interface IDisplayConfig
    {
        /// <summary>
        /// Image interpolation mode
        /// </summary>
        InterpolationMode ImageInterpolation { get; }

        /// <summary>
        /// Drawing margin
        /// </summary>
        int DrawMargin { get; }

        /// <summary>
        /// General rendering font
        /// </summary>
        Font RenderingFont { get; }

        /// <summary>
        /// Link text rendering font
        /// </summary>
        Font LinkRenderingFont { get; }

        /// <summary>
        /// Foreground color
        /// </summary>
        Color ForeColor { get; }

        /// <summary>
        /// Secondary color
        /// </summary>
        Color ForeSecondaryColor { get; }

        /// <summary>
        /// Background color
        /// </summary>
        Color BackColor { get; }

        /// <summary>
        /// Link normal foreground color
        /// </summary>
        Color LinkColor { get; }

        /// <summary>
        /// Link hovering foreground color
        /// </summary>
        Color LinkHoverColor { get; }

        /// <summary>
        /// Link activating foreground color
        /// </summary>
        Color LinkActiveColor { get; }

        /// <summary>
        /// Image max size
        /// </summary>
        Size ImageDefaultMaxSize { get; }
    }
}
